home *** CD-ROM | disk | FTP | other *** search
- /*
- * Packet functions.
- *
- */
-
- #include "hc.h"
-
-
- void ReturnPacket (struct DosPacket *Packet, struct Process *Proc)
- {
- struct Message *Msg;
- struct MsgPort *Port;
-
- Port = Packet->dp_Port;
- Msg = Packet->dp_Link;
- Packet->dp_Port = &Proc->pr_MsgPort;
- Msg->mn_Node.ln_Name = (char *)Packet;
- PutMsg (Port, Msg);
- }
-
-
- struct DosPacket *WaitPacket(struct Process *Proc)
- {
- struct Message *Msg;
- struct MsgPort *Port;
-
- Port = &Proc->pr_MsgPort;
-
- while (1)
- {
- if (SetSignal (0L, 0L) & ReadFlag)
- {
- SetSignal (0L, ReadFlag);
- ReadSer ();
- }
- else if (Msg = GetMsg (Port))
- {
- return (struct DosPacket *)Msg->mn_Node.ln_Name;
- }
- else
- {
- if (Wait ( (1L << Port->mp_SigBit) | ReadFlag) & ReadFlag)
- {
- ReadSer ();
- }
- }
- }
- }
-